﻿#pragma once

#include <vector>
#include "Command.h"

/// @brief 命令的使用者
/// @details 通常是一个流程的发起者
class CommandInvoker
{
public:
    CommandInvoker();
    ~CommandInvoker();

public:
    /// @brief 添加命令
    /// @param cmd 命令
    void addCommand(Command *cmd);

    /// @brief 执行命令队列
    void executeCommands();

    /// @brief 清空命令队列
    void clearCommands();

    /// @brief 判断命令队列是否为空
    bool isCmdListEmpty();

private:
    std::vector<Command*> m_commandList;
};
